package com.liuweiheng.cloudproviderpayment8002.mq.helloWorld;

import com.liuweiheng.cloudproviderpayment8002.util.RabbitMQUtil;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.MessageProperties;
import org.junit.Test;

import java.io.IOException;

/**
 * 生产者
 */
public class Provider {

    /**
     * 测试发送消息
     */
    @Test
    public void testSendMessage() throws IOException {

        // 调用MQ工具类获取连接对象
        Connection connection = RabbitMQUtil.getConnection();

        // 获取连接中的通道
        Channel channel = connection.createChannel();
        /*
         * 通道绑定对应消息队列
         * 参数1：queue 队列名称，若队列不存在，会自动创建
         * 参数2：durable 是否持久化队列
         * 参数3：exclusive 是否独占队列，即只能在当前连接使用该队列
         * 参数4：autoDelete 是否在消费完后自动删除队列
         * 参数5：额外附加参数
         */
        channel.queueDeclare("hello", true, false, false, null);

        /*
         * 发布消息
         * 参数1：exchange 交换机名称
         * 参数2：routingKey 队列名称
         * 参数3：props 传递消息的额外设置
         *       MessageProperties.PERSISTENT_TEXT_PLAIN 对消息进行持久化操作，当RabbitMQ停止服务时，会对内存中队列的消息存储到硬盘中
         * 参数4：消息的具体内容
         */
        channel.basicPublish("", "hello", MessageProperties.PERSISTENT_TEXT_PLAIN, "Hello RabbitMQ".getBytes());


        // 通过MQ工具类关闭连接
        RabbitMQUtil.closeConnection(channel, connection);



    }

}
